1539D - PriceFixed - CodeForces Solution


binary search greedy implementation sortings two pointers *1600

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>
#define vec vector
#define pb push_back
#define mp make_pair
#define pii pair<int,int>
#define ll long long
#define pll pair<ll,ll>
#define fs first
#define sc second

// Multiple test cases or not
// #define BATCH true

using namespace std;

void solve() {
    int n; cin>>n;
    vec<pll> a(n); for (int i=0;i<n;i++)cin>>a[i].sc>>a[i].fs;
    sort(a.begin(), a.end());

    ll l=0,r=n-1,ccnt=0,ans=0;
    while(l<=r) {
        // cout<<"l="<<l<<" r="<<r<<endl;
        if (ccnt>=a[l].fs) {
            // cout<<"1s cnt="<<a[l].sc<<endl;
            ans+=a[l].sc;
            ccnt+=a[l].sc;
            l++;
        } else {
            ll df = (a[l].fs-ccnt);
            // cout<<"df="<<df<<endl;
            if (df < a[r].sc && df>0) {
                // cout<<"2s less cnt="<<df<<endl;
                a[r].sc-= df;
                ans+=2*df;
                ccnt+=df;
            } else {
                // cout<<"2s cnt="<<a[r].sc<<endl;
                ans+=2*a[r].sc;
                ccnt+=a[r].sc;
                r--;
            }
        }
    }
    cout<<ans<<endl;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int t=1;
    #ifdef BATCH
    cin >> t;
    #endif
    while (t--) solve();
}


Comments

Submit
0 Comments
More Questions

1716A - 2-3 Moves
1670B - Dorms War
1716B - Permutation Chain
987A - Infinity Gauntlet
1676G - White-Black Balanced Subtrees
1716D - Chip Move
1352F - Binary String Reconstruction
1487B - Cat Cycle
1679C - Rooks Defenders
56A - Bar
1694B - Paranoid String
35A - Shell Game
1684A - Digit Minimization
43B - Letter
1017A - The Rank
1698B - Rising Sand
235A - LCM Challenge
1075B - Taxi drivers and Lyft
1562A - The Miracle and the Sleeper
1216A - Prefixes
1490C - Sum of Cubes
868A - Bark to Unlock
873B - Balanced Substring
1401D - Maximum Distributed Tree
1716C - Robot in a Hallway
1688B - Patchouli's Magical Talisman
99A - Help Far Away Kingdom
622B - The Time
1688C - Manipulating History
1169D - Good Triple